<?php

/*
 * api_db.php
 * 说明：此文件主要包括一些数据库操作相关的函数
 */

/**********************
* 文件包含
*********************/
include_once('./data/global_settings.php');

/**
 * 连接数据库
 * 参数：
 * 返回值：连接到的数据库对象，如有错误，返回FALSE；
 */
function db_connect()
{
    //引入全局变量
    global $db_addr;
    global $db_username;
    global $db_password;
    
    //打开数据库
    $con = mysql_connect($db_addr,$db_username,$db_password);
    if(!$con)
    {
        //echo('Could not connect: ' . mysql_error());		//若失败则打印错误信息
        return FALSE;
    }
    else
    {
        return $con;
    }
}

/**
 * 运行一条sql语句
 * 参数：
 *  $sql ：要运行的sql语句
 * 返回值：运行结果，根据sql的内容而不同
 */
function db_run_sql($sql)
{
    //引入全局变量
    global $db_name;
    
    //打开数据库
    $con = db_connect();
    if(!$con)
    {
        return FALSE;
    }
    //选择数据库
    mysql_select_db($db_name, $con);
    //发出sql语句
    return mysql_query($sql, $con);
}

/**
 * 此函数往某个表中添加一条记录
 * 参数：
 *  $table ：要加入的表；
 *  $struct ：要设置哪些列；
 *  $data ：各列的设置值；
 */
function db_run_insert($table, $struct, $data)
{
    //构造sql
    $sql = " INSERT INTO " . $table . " " . $struct . " VALUES " . $data;
    //运行sql
    return db_run_sql($sql);
}

/**
 * 此函数修改表中的一条记录
 * 参数：
 *  $table ：要修改的表；
 *  $set ：要修改的列明与值的组合：列名=表达式,列名=表达式...；
 *  $where ：要修改的列的条件；
 */
function db_run_update($table, $set, $where)
{
    //构造sql
    $sql = " UPDATE " . $table . " SET " . $set . " WHERE " . $where;
    //运行sql
    return db_run_sql($sql);
}

/**
 * 此函数删除表中的一条记录
 * 参数：
 *  $table ：要修改的表；
 *  $where ：要删除的列的条件；
 */
function db_run_delete($table, $where)
{
    //构造sql
    $sql = " DELETE FROM " . $table . " WHERE " . $where;
    //运行sql
    return db_run_sql($sql);
}

/**
 * 根据一定规则查询某个表中的某些行，并返回特定的列
 * @param type $table 要查询的表
 * @param type $target 要返回的列
 * @param type $where 查询条件
 * @param type $order_by 排序方式
 * @return Mixed 查询到的列的集合
 */
function db_run_select($table, $target, $where = NULL, $order_by = NULL)
{
    //构造sql
    $sql = "SELECT " . $target . " FROM " . $table;
    if(isset($where))
    {
        $sql = $sql . " WHERE " . $where;
    }
    if(isset($order_by))
    {
        $sql = $sql . " ORDER BY " . $order_by;
    }
    //运行sql
    return db_run_sql($sql);
}

/**
 * 根据某些条件从某个表中读取符合要求的第一个元素的指定列的值
 * 参数：
 *   $table：查询哪个表
 *   $row：指定列
 *   $where：查询条件
 *   $ret_array：
 *      0 - 默认，适用于只查询一列的情况，直接返回值；
 *      1 - 适用于查询多列的情况，返回数组，其中包括多列的值；
 * 返回值：指定列的值
 */
function db_get_first_line($table, $row, $where, $ret_array = 0)
{
    //运行查询
    $result = db_run_select($table, $row, $where);
    if($result)
    {
        //返回指定列的值
        $row_temp = mysql_fetch_array($result);
        if(0 == $ret_array)
        {
            return $row_temp[$row];
        }
        else
        {
            return $row_temp;
        }
    }
    else
    {
        //echo "查询失败 : " . mysql_error();
        return FALSE;
    }
}

/**
 * 判断某个表中符合某个查询条件的记录是否存在
 * 参数：
 *   $table：查询哪个表
 *   $where：查询条件
 * 返回值：
 *   TRUE：存在
 *   FALSE：不存在
 */
function db_is_exist($table, $where)
{
    //运行查询
    $result = db_run_select($table, "*", $where);
    $row_temp = mysql_fetch_array($result);
    if($row_temp)
    {
        return TRUE;
    }
    else
    {
        return FALSE;
    }
}
?>
